انتقل إلى المحتوى الرئيسي

طباعة وصل المطبخ (PrintKitchenReceiptEndpoint)

نظرة عامة

كلاس PrintKitchenReceiptEndpoint يمثل API وظيفتها طباعة الوصل للمطبخ.

ينفذ العملية من خلال:

  1. تحديد حالة الفاتورة على إنها تحتاج طباعة.
  2. توليد بيانات الوصل للمطبخ.
  3. إرسال الوصل للطابعة الخاصة بالمطبخ.
  4. حفظ التاريخ الخاص بعملية الطباعة.

الكونستركتر

public PrintKitchenReceiptEndpoint(PrintToKitchenHelper printToKitchenHelper, BillHelper billHelper, AppDbContext context)

يستقبل 3 خدمات:

المتغيّروظيفته
PrintToKitchenHelperيجهز بيانات الوصل ويطبعه للمطبخ.
BillHelperيعدل حالة الفاتورة ويحفظ التاريخ.
AppDbContextيتواصل ويا قاعدة البيانات.

دالة Configure()

public override void Configure()

هنا يحدد:

  • الرابط مال الـ API:

    POST /checkout/bill/print/kitchen
  • الصلاحية المطلوبة حتى يستخدمها المستخدم: AppPerms.Monitor.SaveAndPrintToKitchen


دالة HandleAsync()

public override async Task HandleAsync(PrintRequest req, CancellationToken ct)

هنا من تصير عملية الطباعة، تسوي الخطوات التالية:

  1. جلب المستخدم من JWT باستخدام AuthHelper.
  2. تغيير حالة الفاتورة إلى NeedsPrintingToCustomer، يعني بعدين تحتاج تنطبع للزبون.
  3. توليد بيانات الوصل للمطبخ من خلال GenerateKitchenReceiptInfo.
  4. طباعة الوصل للمطبخ بواسطة PrintToKitchenAsync.
  5. تسجيل تاريخ الفاتورة ويكتب بيه "تم الطباعة الى المطبخ".
  6. يرجع رد للمستخدم: "Printed Successfully".

ملاحظات

  • الكود يفرق بين طباعة الزبون وطباعة المطبخ.
  • ماكو فحص للطابعة هنا مثل ما سوينه في وصل الزبون.
  • يستعمل CancellationToken تحسبًا للإلغاء من العميل.